支援不同裝置解析度:Android 裝置有不同的 螢幕尺寸(手機、平板電腦、電視等),而且螢幕也有不同的像素尺寸。有可能裝置的螢幕大小一樣,每平方英寸 160 像素,而另一部裝置的螢幕可以容納 480 像素。如果沒考慮這些差異,系統可能會縮放圖片(導致圖片變模糊),或者圖片可能會以完全錯誤的尺寸顯示。
尺寸相同的兩個屏幕可能具有不同數量的像素,如下圖所示
dp 是一個虛擬像素單位,1 dp 約等於中解析度螢幕(160dpi; the "baseline" density).上的 1 像素。對於其他每個密度,Android 會將此值轉換為相應的實際像素數。上圖將某個視圖定義為“100px”寬,那麼它在左側設備上看起來要大得多,使用“100dp”確保它在兩個屏幕上看起來大小相同。
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/clickme"
android:layout_marginTop="20dp" />
由於Android 不同品牌手機的尺寸與解析度沒有固定,於是Google定義規範幾種螢幕的密度單位:
不同密度大小的位圖的相對尺寸
在定義文本大小時,應用可縮放像素 (sp) 作為單位。默認情況下,sp 單位與 dp 大小相同,但它會根據用戶的首選文本大小來調整大小。
<TextView android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="20sp" />
reference :https://developer.android.com/training/multiscreen/screendensities
reference:https://medium.com/@kmgs4524/%E6%8E%A2%E8%A8%8Eandroid%E7%9A%84%E4%BB%8B%E9%9D%A2%E5%B0%BA%E5%AF%B8%E5%96%AE%E4%BD%8D-32907bfc74f4
reference:https://medium.com/@kopulin/%E8%9E%A2%E5%B9%95%E5%B0%BA%E5%AF%B8%E7%9B%B8%E9%97%9C%E8%A7%80%E5%BF%B5%E6%95%B4%E7%90%86-447983424625